跳到主要内容

自定义虚拟摇杆

虚拟摇杆主要有一个父UI和多个子UI组成,父UI为virtual_joystick,子UI为virtual_joystick_slider, 其中子UI需要有一个为主拖动杆

virtual_joystick

用来响应一些自定义事件

有以下一些属性:

  • vj_press_region_type
    可点击区域类型(0方 1圆)
  • vj_active_percent
    移动超过主摇杆move_radius多少时才触发move相关事件
  • vj_center
    摇杆中心位置,以此算方向与百分比
  • vj_is_press_center
    是否以按下时的位置为中心
  • vj_is_release_reset
    松开的时候是否设置到按下之前的位置
  • vj_auto_move
    c++会处理移动
  • vj_auto_skill
    c++会处理技能指示器的位置

提供一些新的事件,可以正确判断多指同时按下的情况:

  • on_vj_press
    摇杆按下,取代on_mouse_down
  • on_vj_release
    摇杆松开,取代on_mouse_up
  • on_vj_move_start
    摇杆开始移动,摇杆的百分比超过vj_active_percent时触发
  • on_vj_move
    摇杆移动,摇杆的百分比超过vj_active_percent后有移动才会触发
  • on_vj_move_end
    会在on_vj_release之前触发

这些事件都会传递这些参数: x,y,percentx,y表示摇杆方向(ui坐标系),percent表示摇杆的百分比

virtual_joystick_slider

拖动杆,可以以某点为中心跟随鼠标移动

  • vj_is_main_slider
    是否是主拖动杆(用来计算数据x,y,percent)
  • vj_toggle_show
    是否在按下和松开的时候改变visible
  • vj_move_radius
    移动范围半径(当vj_is_press_center=false时,会将按下前位置作为中心;当为true时,以按下的位置为中心. 按父节点高为1)
  • vj_move_ratio
    相对于鼠标移动的多少,默认是1。即若鼠标移动100,UI会在移动范围内移动100 * vj_move_percent

使用

local vj = base.ui.virtual_joystick{
-- ...
base.ui.virtual_joystick_slider{
-- ...
},
base.ui.virtual_joystick_slider{
-- ...
},
}